package com.shujia.wyh.day08;

/*
        匿名对象：简单来说其实就是没有名字的对象

        匿名对象的使用场景：
            1、调用方法的时候，仅仅调用一次的时候
                注意，如果你想调用多次，就不适合使用匿名对象
                那么，为什么还要有匿名对象这个技术存在呢？
                    因为匿名对象使用完后，由于没有栈中的引用指向他，那么它使用完毕后，就是一个堆内存中的垃圾空间
                    可以被垃圾回收器回收
            2、匿名对象可以作为实际参数进行传递

 */

class Phone4{
    public void show(){
        System.out.println("手机可以打电话");
    }
}

class PhoneDemo{
    public void fun(Phone4 p){
        p.show();
    }
}


public class AnonymousDemo {
    public static void main(String[] args) {
        //创建一个手机对象
        Phone4 p = new Phone4();
        p.show();
        p.show();

        System.out.println("=======================");
        Phone4 p2 = new Phone4();
        PhoneDemo pd = new PhoneDemo();
        pd.fun(p2);
        System.out.println("=====匿名对象改进=================");
        new PhoneDemo().fun(new Phone4());
        new PhoneDemo().fun(new Phone4()); //这里的每new一次相当于在堆内存中创建一个新的对象

    }
}
